package com.fuyao.cloud.common.core.model;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 公共属性抽像类。
 *
 * @author ly
 * @date 2021/11/9 20:55
 */
@EqualsAndHashCode(callSuper = true)
@Data
public abstract class BaseEntity<T extends BaseEntity<?>> extends Model<T> {

	/**
	 * 主键Id
	 */
	@TableId
	@ApiModelProperty(value="主键Id")
	private Long id;

	/**
	 * 租户ID
	 */
	@ApiModelProperty(value="租户ID")
	private Long tenantId;

	@ApiModelProperty(value="unid")
	private String unid;

	/**
	 * 单位、部门ID
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value="单位、部门ID")
	private Long deptId;

	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value="部门全名称")
	private String deptFullname;

	/**
	 * 创建人
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value="创建人")
	private String createBy;

	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value="创建人ID")
	private Long createId;

	/**
	 * 创建时间
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value="创建时间")
	private LocalDateTime createTime;

	/**
	 * 修改人
	 */
	@TableField(fill = FieldFill.UPDATE)
	@ApiModelProperty(value="修改人")
	private String updateBy;

	/**
	 * 修改时间
	 */
	@TableField(fill = FieldFill.UPDATE)
	@ApiModelProperty(value="修改时间")
	private LocalDateTime updateTime;

	/**
	 * 删除标记,1:已删除,0:正常
	 */
	@TableLogic
	@ApiModelProperty(value="删除标记,1:已删除,0:正常")
	private String delFlag;

	public String getUnid() {
		return this.unid;
	}

    /**
     * 处理单位全名称 格式化
     * @return 单位名称
     */
    public String getOuName(){
        if(StrUtil.isEmpty(deptFullname)){
            return StrUtil.EMPTY;
        }
        if(deptFullname.contains(".")){
            return deptFullname.substring(deptFullname.indexOf(".") + 1);
        }
        return deptFullname;
    }
}
